<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>symbol</title>
</head>
<body>
    <script>
        /**
         * 对象内原有的方法我们不可知
        */
        let game = {
            up:function(){
                console.log("向上移动");
            },
            down:function(){
                console.log("向下移动");
            },
            play: function(){
                console.log("玩游戏");
            }
        }

        /**
         * 如果我们想要为对象添加新的方法的话，如果我们新添加的方法和对象内部的方法重名
         * 可能会覆盖掉对象内部的方法，为了不让我们新添加的方法独一无二可以使用symbol
        */
        
         let play = Symbol();

         game[play] = function () {  
             console.log("symbol玩游戏");
         }

         game.play();
         game[play]();
        




        /**
         * 如果要一次性为对象内部定义多个方法的话可以使用自定义对象来创建命名空间
        */
        let tool ={
            up:Symbol(),
            down: Symbol()
        }

        game[tool.up] =function(){
            console.log("symbol添加的向上移动");
        }
        game[tool.down] = function(){
            console.log("symbol添加的向下移动");

        }

        game.up();
        game[tool.up]();
        game[tool.down]();


    </script>
</body>
</html>